{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c15ac5fe-0808-4cde-a58d-f9e0bd1b778e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Jupyter-Nb-732-Archive-Debian-12-deb-Packages.ipynb\n",
    "# Create by GF 2025-06-17 21:16"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4632f048-a287-45ba-833f-f7884dfbf0f0",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import pandas\n",
    "import relocate_debian_12_deb_packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6ed8c04b-6677-44b6-85ec-c825eb903c1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "Packages = relocate_debian_12_deb_packages.Packages()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e38402c8-d488-4c80-814a-b952170f35dd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Filename: pool/main/0/0ad/0ad_0.0.26-3_amd64.deb',\n",
       " 'Filename: pool/main/0/0ad-data/0ad-data_0.0.26-1_all.deb',\n",
       " 'Filename: pool/main/0/0ad-data/0ad-data-common_0.0.26-1_all.deb',\n",
       " 'Filename: pool/main/0/0xffff/0xffff_0.9-1_amd64.deb',\n",
       " 'Filename: pool/main/2/2048/2048_0.20220905.1556-1_amd64.deb',\n",
       " 'Filename: pool/main/2/2048-qt/2048-qt_0.1.6-2+b2_amd64.deb',\n",
       " 'Filename: pool/main/2/2ping/2ping_4.5-1.1_all.deb',\n",
       " 'Filename: pool/main/2/2vcard/2vcard_0.6-4_all.deb',\n",
       " 'Filename: pool/main/3/3270font/fonts-3270_3.0.1-1_all.deb',\n",
       " 'Filename: pool/main/3/389-ds-base/389-ds_2.3.1+dfsg1-1_all.deb']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Packages.path.update(\"./Packages.gz\")  # 1. Locate the position of \"Packages.gz\".\n",
    "Packages.read()                        # 2. Read \"Packages.gz\" content as a text string.\n",
    "Packages.find_Filename()               # 3. Find all \"Filename\" in the \"Packages.gz\" content.\n",
    "Packages.content.Filename[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "bbf1f994-12f0-45fc-ba16-9e659a72d4ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>deb_path</th>\n",
       "      <th>deb_dir</th>\n",
       "      <th>deb_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>pool/main/0/0ad/0ad</td>\n",
       "      <td>pool/main/0/0ad</td>\n",
       "      <td>0ad</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>pool/main/0/0ad-data/0ad-data</td>\n",
       "      <td>pool/main/0/0ad-data</td>\n",
       "      <td>0ad-data</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>pool/main/0/0ad-data/0ad-data-common</td>\n",
       "      <td>pool/main/0/0ad-data</td>\n",
       "      <td>0ad-data-common</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>pool/main/0/0xffff/0xffff</td>\n",
       "      <td>pool/main/0/0xffff</td>\n",
       "      <td>0xffff</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>pool/main/2/2048/2048</td>\n",
       "      <td>pool/main/2/2048</td>\n",
       "      <td>2048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63467</th>\n",
       "      <td>pool/main/z/zziplib/libzzip-dev</td>\n",
       "      <td>pool/main/z/zziplib</td>\n",
       "      <td>libzzip-dev</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63468</th>\n",
       "      <td>pool/main/z/zziplib/zziplib-bin</td>\n",
       "      <td>pool/main/z/zziplib</td>\n",
       "      <td>zziplib-bin</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63469</th>\n",
       "      <td>pool/main/z/zzuf/zzuf</td>\n",
       "      <td>pool/main/z/zzuf</td>\n",
       "      <td>zzuf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63470</th>\n",
       "      <td>pool/main/z/zzz-to-char/elpa-zzz-to-char</td>\n",
       "      <td>pool/main/z/zzz-to-char</td>\n",
       "      <td>elpa-zzz-to-char</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63471</th>\n",
       "      <td>pool/main/z/zzzeeksphinx/python3-zzzeeksphinx</td>\n",
       "      <td>pool/main/z/zzzeeksphinx</td>\n",
       "      <td>python3-zzzeeksphinx</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>63472 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                            deb_path  \\\n",
       "0                                pool/main/0/0ad/0ad   \n",
       "1                      pool/main/0/0ad-data/0ad-data   \n",
       "2               pool/main/0/0ad-data/0ad-data-common   \n",
       "3                          pool/main/0/0xffff/0xffff   \n",
       "4                              pool/main/2/2048/2048   \n",
       "...                                              ...   \n",
       "63467                pool/main/z/zziplib/libzzip-dev   \n",
       "63468                pool/main/z/zziplib/zziplib-bin   \n",
       "63469                          pool/main/z/zzuf/zzuf   \n",
       "63470       pool/main/z/zzz-to-char/elpa-zzz-to-char   \n",
       "63471  pool/main/z/zzzeeksphinx/python3-zzzeeksphinx   \n",
       "\n",
       "                        deb_dir              deb_name  \n",
       "0               pool/main/0/0ad                   0ad  \n",
       "1          pool/main/0/0ad-data              0ad-data  \n",
       "2          pool/main/0/0ad-data       0ad-data-common  \n",
       "3            pool/main/0/0xffff                0xffff  \n",
       "4              pool/main/2/2048                  2048  \n",
       "...                         ...                   ...  \n",
       "63467       pool/main/z/zziplib           libzzip-dev  \n",
       "63468       pool/main/z/zziplib           zziplib-bin  \n",
       "63469          pool/main/z/zzuf                  zzuf  \n",
       "63470   pool/main/z/zzz-to-char      elpa-zzz-to-char  \n",
       "63471  pool/main/z/zzzeeksphinx  python3-zzzeeksphinx  \n",
       "\n",
       "[63472 rows x 3 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dist_df = pandas.DataFrame({\"deb_path\": Packages.content.Filename})\n",
    "dist_df[\"deb_path\"] = dist_df[\"deb_path\"].str.split(':')                                  # \"Filename: pool/main/0/0ad/0ad_0.0.26-3_amd64.deb\"      ---> [\"Filename\", \" pool/main/0/0ad/0ad_0.0.26-3_amd64.deb\"]\n",
    "dist_df[\"deb_path\"] = dist_df[\"deb_path\"].apply(lambda x: x[1] if len(x) >= 2 else x[0])  # [\"Filename\", \" pool/main/0/0ad/0ad_0.0.26-3_amd64.deb\"] ---> \" pool/main/0/0ad/0ad_0.0.26-3_amd64.deb\"\n",
    "dist_df[\"deb_path\"] = dist_df[\"deb_path\"].str.split('_')                                  # \" pool/main/0/0ad/0ad_0.0.26-3_amd64.deb\"               ---> [\" pool/main/0/0ad/0ad_0.0.26-3\", \"amd64.deb\"]\n",
    "dist_df[\"deb_path\"] = dist_df[\"deb_path\"].apply(lambda x: x[0])                           # [\" pool/main/0/0ad/0ad_0.0.26-3\", \"amd64.deb\"]          ---> \" pool/main/0/0ad/0ad_0.0.26-3\"\n",
    "dist_df[\"deb_path\"] = dist_df[\"deb_path\"].apply(lambda x: x[1:] if x[0] == ' ' else x)    # \" pool/main/0/0ad/0ad_0.0.26-3\"                         ---> \"pool/main/0/0ad/0ad_0.0.26-3\"\n",
    "dist_df[\"deb_dir\" ] = dist_df[\"deb_path\"].apply(lambda x: os.path.dirname(x))\n",
    "dist_df[\"deb_name\"] = dist_df[\"deb_path\"].apply(lambda x: x.split('/')[-1])\n",
    "dist_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "99992f4b-8b4c-4008-adec-7eabbd832775",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>deb_file</th>\n",
       "      <th>deb_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>gcc-12-base_12.2.0-14+deb12u1_arm64.deb</td>\n",
       "      <td>gcc-12-base</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>gcc-12-base_12.2.0-14+deb12u1_i386.deb</td>\n",
       "      <td>gcc-12-base</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>libc6_2.36-9+deb12u10_arm64.deb</td>\n",
       "      <td>libc6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>libc6_2.36-9+deb12u10_i386.deb</td>\n",
       "      <td>libc6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>libgcc-s1_12.2.0-14+deb12u1_arm64.deb</td>\n",
       "      <td>libgcc-s1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>libgcc-s1_12.2.0-14+deb12u1_i386.deb</td>\n",
       "      <td>libgcc-s1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>perl_5.36.0-7+deb12u2_arm64.deb</td>\n",
       "      <td>perl</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>perl_5.36.0-7+deb12u2_i386.deb</td>\n",
       "      <td>perl</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>python3_3.11.2-1+b1_arm64.deb</td>\n",
       "      <td>python3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>python3_3.11.2-1+b1_i386.deb</td>\n",
       "      <td>python3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>sysvinit-utils_3.06-4_arm64.deb</td>\n",
       "      <td>sysvinit-utils</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>sysvinit-utils_3.06-4_i386.deb</td>\n",
       "      <td>sysvinit-utils</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                   deb_file        deb_name\n",
       "0   gcc-12-base_12.2.0-14+deb12u1_arm64.deb     gcc-12-base\n",
       "1    gcc-12-base_12.2.0-14+deb12u1_i386.deb     gcc-12-base\n",
       "2           libc6_2.36-9+deb12u10_arm64.deb           libc6\n",
       "3            libc6_2.36-9+deb12u10_i386.deb           libc6\n",
       "4     libgcc-s1_12.2.0-14+deb12u1_arm64.deb       libgcc-s1\n",
       "5      libgcc-s1_12.2.0-14+deb12u1_i386.deb       libgcc-s1\n",
       "6           perl_5.36.0-7+deb12u2_arm64.deb            perl\n",
       "7            perl_5.36.0-7+deb12u2_i386.deb            perl\n",
       "8             python3_3.11.2-1+b1_arm64.deb         python3\n",
       "9              python3_3.11.2-1+b1_i386.deb         python3\n",
       "10          sysvinit-utils_3.06-4_arm64.deb  sysvinit-utils\n",
       "11           sysvinit-utils_3.06-4_i386.deb  sysvinit-utils"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pandas.DataFrame({\"deb_file\": os.listdir(\"./deb\")})\n",
    "df[\"deb_name\"] = df[\"deb_file\"].str.split('_')         # \"0ad_0.0.26-3_amd64.deb\"         ---> [\"0ad\", \"0.0.26-3\", \"amd64.deb\"]\n",
    "df[\"deb_name\"] = df[\"deb_name\"].apply(lambda x: x[0])  # [\"0ad\", \"0.0.26-3\", \"amd64.deb\"] ---> \"0ad\"\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9d5d76ba-0f70-4c66-9417-e7406bcfee61",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>deb_file</th>\n",
       "      <th>deb_name</th>\n",
       "      <th>deb_dir</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>gcc-12-base_12.2.0-14+deb12u1_arm64.deb</td>\n",
       "      <td>gcc-12-base</td>\n",
       "      <td>pool/main/g/gcc-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>gcc-12-base_12.2.0-14+deb12u1_i386.deb</td>\n",
       "      <td>gcc-12-base</td>\n",
       "      <td>pool/main/g/gcc-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>libc6_2.36-9+deb12u10_arm64.deb</td>\n",
       "      <td>libc6</td>\n",
       "      <td>pool/main/g/glibc</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>libc6_2.36-9+deb12u10_i386.deb</td>\n",
       "      <td>libc6</td>\n",
       "      <td>pool/main/g/glibc</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>libgcc-s1_12.2.0-14+deb12u1_arm64.deb</td>\n",
       "      <td>libgcc-s1</td>\n",
       "      <td>pool/main/g/gcc-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>libgcc-s1_12.2.0-14+deb12u1_i386.deb</td>\n",
       "      <td>libgcc-s1</td>\n",
       "      <td>pool/main/g/gcc-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>perl_5.36.0-7+deb12u2_arm64.deb</td>\n",
       "      <td>perl</td>\n",
       "      <td>pool/main/p/perl</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>perl_5.36.0-7+deb12u2_i386.deb</td>\n",
       "      <td>perl</td>\n",
       "      <td>pool/main/p/perl</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>python3_3.11.2-1+b1_arm64.deb</td>\n",
       "      <td>python3</td>\n",
       "      <td>pool/main/p/python3-defaults</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>python3_3.11.2-1+b1_i386.deb</td>\n",
       "      <td>python3</td>\n",
       "      <td>pool/main/p/python3-defaults</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>sysvinit-utils_3.06-4_arm64.deb</td>\n",
       "      <td>sysvinit-utils</td>\n",
       "      <td>pool/main/s/sysvinit</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>sysvinit-utils_3.06-4_i386.deb</td>\n",
       "      <td>sysvinit-utils</td>\n",
       "      <td>pool/main/s/sysvinit</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                   deb_file        deb_name  \\\n",
       "0   gcc-12-base_12.2.0-14+deb12u1_arm64.deb     gcc-12-base   \n",
       "1    gcc-12-base_12.2.0-14+deb12u1_i386.deb     gcc-12-base   \n",
       "2           libc6_2.36-9+deb12u10_arm64.deb           libc6   \n",
       "3            libc6_2.36-9+deb12u10_i386.deb           libc6   \n",
       "4     libgcc-s1_12.2.0-14+deb12u1_arm64.deb       libgcc-s1   \n",
       "5      libgcc-s1_12.2.0-14+deb12u1_i386.deb       libgcc-s1   \n",
       "6           perl_5.36.0-7+deb12u2_arm64.deb            perl   \n",
       "7            perl_5.36.0-7+deb12u2_i386.deb            perl   \n",
       "8             python3_3.11.2-1+b1_arm64.deb         python3   \n",
       "9              python3_3.11.2-1+b1_i386.deb         python3   \n",
       "10          sysvinit-utils_3.06-4_arm64.deb  sysvinit-utils   \n",
       "11           sysvinit-utils_3.06-4_i386.deb  sysvinit-utils   \n",
       "\n",
       "                         deb_dir  \n",
       "0             pool/main/g/gcc-12  \n",
       "1             pool/main/g/gcc-12  \n",
       "2              pool/main/g/glibc  \n",
       "3              pool/main/g/glibc  \n",
       "4             pool/main/g/gcc-12  \n",
       "5             pool/main/g/gcc-12  \n",
       "6               pool/main/p/perl  \n",
       "7               pool/main/p/perl  \n",
       "8   pool/main/p/python3-defaults  \n",
       "9   pool/main/p/python3-defaults  \n",
       "10          pool/main/s/sysvinit  \n",
       "11          pool/main/s/sysvinit  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pandas.merge(left = df, right = dist_df, how=\"left\", on = \"deb_name\")\n",
    "df = df[[\"deb_file\", \"deb_name\", \"deb_dir\"]]\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3a1c51ad-fd69-40e7-badf-a1d628a22cd1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     None\n",
       "1     None\n",
       "2     None\n",
       "3     None\n",
       "4     None\n",
       "5     None\n",
       "6     None\n",
       "7     None\n",
       "8     None\n",
       "9     None\n",
       "10    None\n",
       "11    None\n",
       "dtype: object"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(lambda row: os.makedirs(\"./deb_dist/\" + row[\"deb_dir\"], exist_ok=True), axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "5184dbb8-d6a4-470c-8495-bf950dd5507f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     None\n",
       "1     None\n",
       "2     None\n",
       "3     None\n",
       "4     None\n",
       "5     None\n",
       "6     None\n",
       "7     None\n",
       "8     None\n",
       "9     None\n",
       "10    None\n",
       "11    None\n",
       "dtype: object"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(lambda row: os.rename(f\"\"\"./deb/{row[\"deb_file\"]}\"\"\", f\"\"\"./deb_dist/{row[\"deb_dir\"]}/{row[\"deb_file\"]}\"\"\"), axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "56a14227-64c0-4a18-a0a8-e9903b1de295",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
